#ifndef BUILDERELEMENTOS_H_
#define BUILDERELEMENTOS_H_

#include <iostream>
#include <string>
#include <map>
#include <list>
#include "../modelo/Elemento.h"
#include "TipoElemento.h"
#include "../common/Logger.h"

using namespace std;

class BuilderElementos {
public:
	static BuilderElementos* obtenerInstancia();
	virtual ~BuilderElementos();
	void agregarTipoElemento(TipoElemento* tipoElemento);
	Elemento* obtenerElemento(string tipo);
	list<pair<string, string> >* obtenerListaElementos();
private:
	static BuilderElementos* instancia;
	map<string, TipoElemento*> mapaTiposElementos;
protected:
	BuilderElementos();

};

#endif /* BUILDERELEMENTOS_H_ */
